Information (e.g., signals representing voice, data, video, text, or encoded versions thereof) must typically be processed before the information can be transmitted over a communications channel or recorded on a medium. First, the information, if not already in digital form, is digitized, as for example by an analog-to-digital converter whereby the information is represented as symbols comprising elements from a set of binary digits or bits, {0,1}. Next, the digitized information may be optionally be compressed to represent the information in a reduced number of symbols. Any reduction in the number of symbols representing the information may be partially offset if the compressed information is processed using error correcting codes. Error correcting codes introduce additional symbols to a signal (e.g. to a digital representing compressed information) to form an encoded signal. In particular, an error correcting code operates on groups of symbols, called information words, in the signal. Each information word is used to generate, according to a prescribed error correcting coding rule, a codeword comprising a larger group of symbols. See e.g., Shu Lin and Daniel J. Costello, Jr., Error Control Coding, Prentice Hall, Englewood Cliffs, N.J., 1983. The encoded signal, comprising the codewords, may then be either transmitted over the communications channel or recorded on a medium. In either case, the encoded signal will be corrupted by noise introduced in the transmission or recording process, such as by atmospheric noise (caused by lightening) on radio channels. The additional symbols introduced by the error correcting codes improve the ability of a system receiving the corrupted encoded signal to recover the compressed information.
Importantly, an additional or further kind of coding, termed modulation coding, is often used to process information (such as the encoded signal generated using the error correcting codes) before transmission over a channel or recording on a medium. In particular, modulation coding advantageously transforms a group of input symbols (such as a group of symbols which comprises a codeword generated by an error correcting code) and generates a channel or modulation codeword which channel codeword comprises a larger number of symbols than the number of symbols in the group of input symbols. As with error correcting codes, modulation coding can improve a system's immunity to noise. Perhaps more importantly, modulation codes can advantageously be used to regulate time parameters (e.g. for controlling oscillator or counting circuits) and to regulate gain parameters (e.g. for amplifier circuits) in recording and communications systems as explained below.
Modulation coding may be implemented, for example, by establishing, for each possible combination of input symbols in a group, a one-to-one mapping between the group and a corresponding channel codeword. In short, each combination of input symbols uniquely specifies a channel codeword and vice versa. Such a mapping may be established by taking a group of input symbols and using it as an address of a memory device (such as a read only memory or a random access memory) where the contents of the address are the symbols comprising the channel codeword. The memory device is referred to as a codebook. The particular group of input symbols may be obtained or decoded from the channel codeword by using, for example, an inverse codebook where a channel codeword is an address of a location in a memory device where the contents of the address are the group of symbols corresponding to the channel codeword.
Consider a system which records information on a magnetic medium and in which a channel codeword comprising a sequence of seven binary digits "1010001" is to be represented on the magnetic medium. The binary sequence is advantageously used to modulate or control the flow of an electrical current in one of two opposite directions. The current in turn, produces a magnetic field the direction of which magnetic field is in one of two opposite directions depending on the direction of the current. In particular, transitions from one direction in the current (and consequently in the magnetic field) to the other, correspond to binary "1's" in the sequence. Thus, assuming the electrical current and corresponding magnetic field are established in respective "initial" directions, the first "1" in the sequence of seven binary digits would cause the current and corresponding magnetic field are established to transition or switch to the opposite directions. The current and corresponding magnetic field would remain in the opposite direction during the first "0" in the sequence of seven binary digits. The third binary digit, which is a "1", causes the current and magnetic field to revert or transition back to their initial directions where they remain for the next three digits in the sequence of seven binary digits, i.e., the "0's" cause no change in the direction of magnetization. The seventh digit in the sequence is a "1" which causes the current and corresponding magnetic field to transition to the opposite directions.
To represent the seven digit binary sequence on the magnetic medium, the magnetic medium is divided into portions with each portion corresponding to a particular digit in the binary sequence. Each portion of the magnetic medium is, in turn, exposed to the magnetic field produced according to its corresponding bit in the channel codeword, and is consequently magnetized by the field in one of the two directions. The information recorded on the medium is termed a channel sequence and is defined by the channel codeword. The channel sequence comprises channel symbols, but unlike the symbols in the information and channel codewords described above, the channel symbols in a channel sequence for a magnetic medium are advantageously selected from a set of bipolar symbols, {-1,1}, which set of symbols more closely reflects the physical manifestation of the channel sequence on the medium in which the portions are magnetized with equal (i.e. unit) intensity in one of two (i.e. bi-) opposite (i.e. polar) directions.
The channel codeword which defined the channel sequence is read by detecting a change in a voltage signal caused by: 1) changes in the magnetization of portions of the medium and 2) by noise in the system. The voltage signal is a pulse each time a "1" is detected and just noise each time a "0" is detected. The position of the pulses carries information about timing parameters in the system, and the height of the pulses carries information about gain parameters in the system. Importantly, however, if a long string of "0's" are read, there is no voltage output (other than noise), and hence no timing or gain information, thereby leading to a loss of, or drift in, timing and gain parameters.
Thus, modulation coding schemes which advantageously avoid the recording or transmission of long strings of binary zeros in channel codewords may be used to ensure accurate timing and gain information.
In addition to ensuring accurate timing and gain information, modulation coding may also advantageously be used to generate a signal comprising "dc-free" channel sequences. More particularly, it is often desirable that channel sequences have a spectral null at zero (dc) frequency by which it is meant that the running digital sum (i.e. the arithmetic sum) of all the symbols transmitted in the sequence over a channel or recorded on a medium is bounded. Such sequences are said to be dc-free, and such sequences are desirable because they may provide even further noise immunity. One way to assure a dc-free sequence is to design a system in which the block digital or the arithmetic sum of symbols in a channel sequence transmitted over a channel is zero. However, efficient or high rate modulation codes, i.e., codes that can prevent long strings of zeros from occurring without adding an excessive number of symbols to the information to be recorded, that also define dc-free channel sequences, typically require complex circuitry to implement and often require large power consumption and large area on integrated circuits relative to other elements in the transmission or recording system. Similarly, systems for decoding such high rate modulation codes are also relatively complex. Thus, there is a need for an improved method and apparatus for encoding and decoding information using high rate codes that advantageously are dc-free.